#include "common.h"
#include <pthread.h>

/** 测试多线程释放资源 */
int signel = 0; 
void * test_free_thread(BQueueBox *data) {
    LOG_DEBUG("接收到的地址 %p \n", data);
    destroyBQueue(data);
    signel = 1;

    int i = 0;
    while ((i++) < 10)
    {
        LOG_DEBUG("GOOD \n");
        // sleep(1);
        usleep(1000*1000);
    }

    // pthread_detach(pthread_self());
}

void test_main() {
    /** 测试单线程, free可以直接释放malloc获取的资源 */
    //test_free_thread();

    

    //测试多线程创建, 申请资源和释放

    // void *data = (void *) malloc(SIZE_MB * 30);
    BQueueBox *data = createBQueue(1000, 10, 0);
    LOG_DEBUG("申请 %p \n", data);
    pthread_t test_thread_id;
    pthread_create(&test_thread_id, NULL, test_free_thread, (void *)data);
    pthread_join(test_thread_id, NULL);
    LOG_DEBUG("释放程序 =====>\n");

    while (1)
    {
        // LOG_DEBUG("===========> test \n");
        // sleep(1);
        if(signel) {
            signel = 0;
            break;
        }
    }

    // pthread_join(test_thread_id, NULL);
    LOG_DEBUG("释放程序 %p \n", data);
    // free(data);
}
